setwd("/Users/sofiatorneri/Downloads")
data_pwt <- fread("pwt_database.csv")
data_wdi <- fread("wdi_database.csv")
data_gini <- fread("gini.csv", sep=";")
setnames(data_pwt, "iso", "Country")
setnames(data_pwt, "year", "year")
setnames(data_wdi, "iso", "Country")
setnames(data_wdi, "year", "year")
setnames(data_gini, "country", "Country")
data_gini_long <- melt(data_gini, id.vars = "Country",
variable.name = "year",
value.name = "GINI")
data_gini_long[, year := as.numeric(gsub("Ano ", "", year))]
data_pwt <- as.data.table(data_pwt)
data_wdi <- as.data.table(data_wdi)
data_gini_long <- as.data.table(data_gini_long)
setnames(data_wdi, old = c("EN.BIR.THRD.NO", "EN.FSH.THRD.NO", "EN.HPT.THRD.NO", "EN.MAM.THRD.NO", "AG.LND.FRST.ZS", "EN.ATM.CO2E.KT", "NY.GDP.PCAP.KD", "ER.PTD.TOTL.ZS"),
new = c("Bird", "Fish", "Plant", "Mammal", "Forest_perc", "CO2", "GDP", "Land_n_Marine"))
setnames(data_pwt, old = "hdi", new = "Idh")
for (var in c("Land_n_Marine", "Bird", "Fish", "Plant", "Mammal")) {
# Preencher valores ausentes com a média por país
data_wdi[, paste0(var, "_mean_country") := mean(get(var), na.rm = TRUE), by = Country]
data_wdi[is.na(get(var)), (var) := get(paste0(var, "_mean_country"))]
# Preencher valores ausentes restantes com a média global
global_mean <- mean(data_wdi[[var]], na.rm = TRUE)
data_wdi[is.na(get(var)), (var) := global_mean]
# Remover as colunas auxiliares de média
data_wdi[, paste0(var, "_mean_country") := NULL]
}
data_gini_long$Country <- countrycode(data_gini_long$Country, origin = "country.name", destination = "iso3c")
base_total <- merge(data_wdi, data_pwt, by = c("Country", "year"), all = TRUE, allow.cartesian = TRUE)
base_total <- merge(base_total, data_gini_long, by = c("Country", "year"), all.x = TRUE, allow.cartesian = TRUE)
base_total[, year := as.numeric(year)]
base_total <- base_total[order(Country, year)]
base_total[, g_GDP := log(GDP) - shift(log(GDP), type = "lag"), by = Country]
base_total[, dlnCO2 := log(CO2) - shift(log(CO2), type = "lag"), by = Country]
### Remover linhas com valores ausentes nas principais variáveis
variaveis_essenciais <- c("GDP", "CO2", "Forest_perc", "Land_n_Marine", "Bird", "Fish", "Plant", "Mammal")
base_total <- base_total[complete.cases(base_total[, ..variaveis_essenciais]), ]
# Selecionando as variáveis desejadas para a análise
variaveis_selecionadas <- c("GDP", "dlnCO2","CO2", "GINI", "Idh",
"Forest_perc", "Land_n_Marine", "Bird", "Fish",
"Plant", "Mammal", "g_GDP")
# Filtrando a base para as variáveis selecionadas e garantindo que sejam numéricas
dados_estatisticas <- base_total %>%
select(all_of(variaveis_selecionadas)) %>%
mutate(across(everything(), as.numeric)) # Converter todas as colunas para numérico
# Substituir valores Inf por NA
dados_estatisticas <- dados_estatisticas %>%
mutate(across(everything(), ~ replace(., is.infinite(.), NA)))
# Remover qualquer linha com valores NA
dados_estatisticas <- na.omit(dados_estatisticas)
library(stargazer)
stargazer(dados_estatisticas, type = "text", title = "Estatísticas Descritivas",
digits = 2, summary.stat = c("mean", "median", "min", "max", "sd"))
##
## Estatísticas Descritivas
## ==================================================================
## Statistic Mean Median Min Max St. Dev.
## ------------------------------------------------------------------
## GDP 13,186.67 5,668.43 270.14 108,351.40 18,094.14
## dlnCO2 0.02 0.02 -0.71 0.71 0.09
## CO2 179,148.90 13,046.30 7.50 10,762,824.00 861,015.70
## GINI 38.26 37.20 24.20 63.30 7.62
## Idh 0.72 0.74 0.38 0.96 0.15
## Forest_perc 33.07 31.62 0.00 97.77 24.18
## Land_n_Marine 11.98 8.58 0.01 99.96 12.30
## Bird 23.47 16 0 175 26.12
## Fish 39.90 30 0 251 39.36
## Plant 88.35 23 0 1,859 197.73
## Mammal 17.69 10 0 191 22.75
## g_GDP 0.02 0.02 -0.36 0.27 0.04
## ------------------------------------------------------------------
# Calculando a matriz de correlação usando base_total
correlation_matrix <- cor(dados_estatisticas, use = "complete.obs")
# Visualizando a matriz de correlação com corrplot
library(corrplot)
corrplot(correlation_matrix, method = "color", addCoef.col = "black",
tl.cex = 0.8, number.cex = 0.7, title = "Matriz de Correlação",
mar = c(0, 0, 1, 0))
##### Loading required packages #####
library(ggplot2)
library(dplyr)
##### Filtrando os países específicos #####
# Filtrando os países Brasil, Estados Unidos, França e Chile
paises_selecionados <- c("BRA", "USA", "FRA", "CHL")
data_gini_filtrada <- data_gini_long %>%
filter(Country %in% paises_selecionados)
##### Criando os gráficos de linha do índice de Gini ao longo dos anos #####
ggplot(data_gini_filtrada, aes(x = year, y = GINI, color = Country)) +
geom_line() +
geom_point() +
labs(title = "Índice de Gini ao Longo dos Anos",
x = "Ano",
y = "Índice de Gini",
color = "País") +
theme_minimal() +
theme(legend.position = "top") +
scale_color_manual(values = c("BRA" = "blue", "USA" = "red", "FRA" = "green", "CHL" = "purple"))
##Gráfico de dispersão
##### Preparando a BaseTotal para o gráfico de dispersão #####
# Calcular o logaritmo do PIB na BaseTotal, caso ainda não tenha sido feito
base_total[, log_GDP := log(GDP)]
library(plotly)
# Criando o gráfico de dispersão interativo com plotly
fig <- ggplot(base_total, aes(x = log_GDP, y = Idh)) +
geom_point(aes(color = Country), alpha = 0.6) +
labs(title = "Gráfico de Dispersão: log(PIB) vs IDH",
x = "Logaritmo do PIB",
y = "Índice de Desenvolvimento Humano (IDH)",
color = "País") +
theme_minimal() +
theme(legend.position = "top")
# Convertendo o gráfico ggplot para plotly
ggplotly(fig)
##Gráfico IDH vs capital humano
# Carregar o pacote plotly
library(plotly)
# Criando o gráfico de dispersão interativo com plotly
fig <- ggplot(base_total, aes(x = hc, y = Idh)) +
geom_point(aes(color = Country), alpha = 0.6) + # Usando pontos com cor por país
labs(title = "Gráfico de Dispersão: IDH vs Capital Humano",
x = "Capital Humano (hc)",
y = "Índice de Desenvolvimento Humano (IDH)",
color = "País") +
theme_minimal() + # Estilo minimalista
theme(legend.position = "top") # Posicionamento da legenda
# Convertendo o gráfico ggplot para plotly
ggplotly(fig)
##Gráfico 3
# Converter 'hc' para numérico e tratar valores não numéricos como NA
base_total$hc <- as.numeric(base_total$hc)
## Warning: NAs introduced by coercion
summary(base_total$hc) # Verificar se a conversão foi bem-sucedida
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 1.193 1.953 2.731 2.648 3.257 3.849 459
# Calcular a média do Gini e do capital humano por país
media_gini_hc <- base_total %>%
group_by(Country) %>%
summarise(
media_gini = mean(GINI, na.rm = TRUE),
media_hc = mean(hc, na.rm = TRUE)
)
# Visualizar a tabela resultante para confirmar os valores
print(media_gini_hc)
## # A tibble: 188 × 3
## Country media_gini media_hc
## <chr> <dbl> <dbl>
## 1 AFG 37.7 NaN
## 2 AGO 49.8 1.46
## 3 ALB 33.5 2.95
## 4 AND 35.2 NaN
## 5 ARE 28.1 NaN
## 6 ARG 41.8 3.02
## 7 ARM 32.4 NaN
## 8 ATG 37.2 NaN
## 9 AUS 34.4 3.52
## 10 AUT 30.6 3.35
## # ℹ 178 more rows
# Criando o gráfico de dispersão interativo com plotly
fig <- ggplot(media_gini_hc, aes(x = media_gini, y = media_hc)) +
geom_point(aes(color = Country), alpha = 0.6) +
labs(title = "Gráfico de Dispersão: Média do Gini vs Capital Humano",
x = "Média do Índice de Gini",
y = "Média do Capital Humano (hc)",
color = "País") +
theme_minimal() +
theme(legend.position = "top")
# Convertendo o gráfico ggplot para plotly
ggplotly(fig)
View(data_gini_long)